package session;

import javax.ejb.TransactionAttribute;
import javax.persistence.Query;

import entidade.Pessoa;

public class GenericPessoaSession<T extends Pessoa> extends GenericSession<T>{

	public GenericPessoaSession(Class<T> clazz) {
		super(clazz);
	}
//	@TransactionAttribute
//	@SuppressWarnings("unchecked")
//	public T buscarPorNome(String nome) {
//		String select = "from ";
//		select += t.getSimpleName()+" t where t.nome = :nome";
//		Query query = em.createQuery(select);
//		query.setParameter("nome", nome);
//		return (T) query.getSingleResult();
//
//	}
	@TransactionAttribute
	@SuppressWarnings("unchecked")
	public T buscarPorLogin(String login){
		Query queryPessoa = em.createQuery("from Pessoa p where p.login = :login");
		queryPessoa.setParameter("login", login);
		Pessoa p = (Pessoa) queryPessoa.getSingleResult();
		String select = "from ";
		select += t.getSimpleName()+" t where t.id = :id";
		Query query = em.createQuery(select);
		query.setParameter("id", p.getId());
		return (T) query.getSingleResult();
	}

}
